package com.example.app;

import com.example.app.entity.User;
import com.example.app.samples.View;
import com.example.core.BaseApplication;
import com.example.core.utils.RachelUtils;
import com.example.core.utils.Utils;

import kotlin.Unit;
import kotlin.jvm.functions.Function1;

class Java {
    public static void main(String[] args) {
        int age = 18;
        final String name = "Java";
        Java java = new Java();
        //Java中调用kotlin的高级函数（直接被定义在文件中的函数）
        //通过名字=（文件名+kt的后缀），这样的方式来调用。like:UtilsKt.dp2px(12f);
        //但是这个名字我们是可以修改的，使用注解的方式@file:JvmName("RachelUtils")
        RachelUtils.dp2px(12f);
        Utils.INSTANCE.toast("message");
        //需要通过伴生对象调用
//        BaseApplication.Companion.getCurrentApplication();
        //真正的静态函数可以直接调用
//        BaseApplication.getCurrentApplication();
        //想在java中这样调用的话，可以通过注解的方式@get:JvmName("currentApplication")
        BaseApplication.currentApplication();


        User user=new User();
        String userName=user.getUsername();
        user.setUsername("aaa");
        //如果我们不想用get方法访问成员变量，而是使用.变量名称直接访问
        //那么我们需要在变量上加一个@JvmField
        //这样就只会生成一个公开的属性，而不会生成它的get和set
        //String password=user.password;

        //java中调用
        new View().setOnclickListener(new Function1<View, Unit>() {
            @Override
            public Unit invoke(View view) {
                return null;
            }
        });
    }
}
